Many network environments enable messages to be forwarded from one site within the network to one or more other sites using a multicast protocol. Typical multicast protocols send messages from one site to one or more other sites based on information stored within a message header. That is, each message has two components: the message header, which includes the routing information, including destination addresses or a predefined group name that is associated with a fixed list of destinations, and a data content, which is the data of the message. The routing information is read from the message header and is used to send the data content of the message to the specified destinations.
One example of a system that conventionally includes such a network environment is a publish/subscribe system. In publish/subscribe systems, publishers post messages and subscribers independently specify categories of messages in which they are interested. The system takes the posted messages and includes in each message header the destination information of those subscribers indicating interest in the particular message. The system then uses the destination information in the message to forward the message through the network to the appropriate subscribers.
More particularly, a publish/subscribe system includes a network of message routers (or simply routers or nodes) connected via links in an arbitrary graph topology. A number of clients connect to the periphery of this router network and either publish or subscribe to messages. A message includes of a number of attributes, which are name-value pairs. A subscription specifies a predicate on the attributes of messages.
The problem addressed by the present application is how to handle changes of topology in such a routing network. The need for changing topology arises from a number of conditions, including: (1) the need for system maintainers to move routers on- and off-line; (2) the growth of the network; and (3) changes in link speed that alter the optimum spanning trees of the network; etc. An assumption is made that a configuration manager has made a decision to effect a particular topology change (i.e., a reconfiguration). The present invention is directed to a technique by which nodes of the router network execute a reconfiguration decision, eventually resulting in a new state of the network in which messages are forwarded using a new spanning tree.